package com.weiz.controller.excel;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class InputStreamToByteArray {
    /**
     * 首先，创建了一个 ByteArrayOutputStream 对象 buffer，用于存储从 InputStream 读取的数据。
     * 定义了一个字节数组 data，大小为 1024 字节，作为每次读取的缓冲区。
     * 通过 while 循环，使用 inputStream.read(data, 0, data.length) 方法读取数据到 data 数组中，每次最多读取 1024 字节，当读取到文件末尾时返回 -1。
     * 读取的数据存储在 buffer 中，通过 buffer.write(data, 0, nRead) 方法将数据写入。
     * 最后使用 buffer.toByteArray() 方法将存储在 buffer 中的数据转换为 byte[] 并返回。
     * @param inputStream
     * @return
     * @throws IOException
     */
    public static byte[] inputStreamToByteArray(InputStream inputStream) throws IOException {
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int nRead;
        byte[] data = new byte[1024];
        // 从输入流中读取数据，将其存储到字节数组中
        while ((nRead = inputStream.read(data, 0, data.length))!= -1) {
            buffer.write(data, 0, nRead);
        }
        // 将缓冲区中的数据转换成字节数组
        return buffer.toByteArray();
    }
}